package com.kk.templatemethod;

/**
 * @author MH
 * @date 2022-01-19
 */
public abstract class AbstractSoyaMilk {

    /**
     * 模板方法
     */
    final void make() {
        select();
        add();
        soak();
        beat();
    }

    /**
     * 选材
     */
    public void select() {
        System.out.println("step1：选择新鲜的材料");
    }

    /**
     * 加料,抽象方法,子类具体实现( 如果此方法不是抽象方法，而是一个默认实现了的空方法，那么此方法就是 模板方法模式的钩子方法， 子类可以选择不实现该方法 )
     */
    public abstract void add();

    /**
     * 浸泡
     */
    public void soak() {
        System.out.println("step3：侵泡");
    }

    /**
     * 豆浆机打豆浆
     */
    public void beat() {
        System.out.println("step4：打豆浆");
    }


}
